'use strict';
module.exports = app => {
  const { STRING, BOOLEAN, TINYINT } = app.Sequelize;

  const Role = app.model.define('role', {
    name: {
      type: STRING, // VARCHAR(255)
      allowNull: false, // allowNull 默认为 true 不能为空设置为 false ,
      unique: true, // 唯一的 // unique 属性是创建唯一约束的简写.
      omment: '名称', // 注释
    },
    is_default: {
      type: TINYINT, // 布尔
      defaultValue: 0,
      comment: '是否默认角色 1 true ｜ 0 false',
    },
    status: {
      type: BOOLEAN, // 布尔
      defaultValue: 1,
      comment: '状态 1 true ｜ 0 false',
    },

  });


  Role.associate = () => {
    // 因为查找role的时候,想要知道这个role下面有多少个user,所以
    // app.model.Role.hasMany(app.model.User, { as: 'user' });

    app.model.Role.belongsToMany(app.model.User, {
      as: 'user',
      through: app.model.UserRole,
      foreignKey: 'role_id',
      otherKey: 'user_id',
    });

    app.model.Role.belongsToMany(app.model.Permission, {
      through: app.model.RolePermission,
      foreignKey: 'role_id',
      otherKey: 'permission_id',
    });

    app.model.Role.belongsToMany(app.model.Menu, {
      through: app.model.RoleMenu,
      foreignKey: 'role_id',
      otherKey: 'menu_id',
    });


  };


  return Role;
};
